SQL 笔记Part1: DBMS

1. 背景

常用语境下的数据库一般是说的 DBMS,实际数据库是存储的数据集合。而又因为数据存储形式差异,DBMS 有多种类型:

  • 层次数据库(Hierarchical Database,HDB)最早研制成功的数据库系统,它把数据通过层次结构(树形结构)的方式表现出来,代表是 IMS(Information Management System)数据库
  • 关系数据库(Relational Database,RDB) 关系型数据库也采用由行和列组成的二维表来管理数据,此外使用的语言是 SQL(Structured Query Language)。代表性的关系型数据库有 Oracle Database、SQL Server、DB2、PostgreSQL 和 MySQL
  • 非关系型数据库 也就是常说的 NoSQL,实际上是表示的一大类数据库:
    • 面向文档(Document-Oriented)数据库 面向文档数据库会将数据以文档的形式存储。每个文档都是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象
        数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。具有代表性的面向文档数据库有 MongDB 和 CouchDB
    • 列存储(Column-oriented)数据库 数据存储存在列族(column family)中,列族用来存储经常被一起查询的相关数据。例如,列存储数据库通常用应用于分布式存储的海量数据。具有代表性的列存储数据库有 Cassandra 和 HBase
    • XML数据库(XML Database,XMLDB) 是一种支持对 XML(标准通用标记语言下的一个应用)格式文档进行存储和查询等操作的数据管理系统
    • 键值存储系统(Key-Value Store,KVS) 用来保存查询所使用的主键(Key)和值(Value)的组合的数据库。具有代表性的键值存储数据库有 Redis、Memcached 和 MemcachedDB

2. 基于关系数据库 SQL 操作

SQL 对于数据的操作包括 DDL、DML 以及 DCL,具体的意义和实用的相关关键字:

  • DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令:

    • CREATE 创建数据库和表

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      # 用于创建数据库
      CREATE DATABASE <数据库名称>;

      # 创建表
      CREATE TABLE < 表名 >
      ( < 列名 1> < 数据类型 > < 该列所需约束 > ,
      < 列名 2> < 数据类型 > < 该列所需约束 > ,
      < 列名 3> < 数据类型 > < 该列所需约束 > ,
      < 列名 4> < 数据类型 > < 该列所需约束 > ,
      .
      .
      .
      < 该表的约束 1> , < 该表的约束 2> ,……);

      其中常用的数据类型包括了 INT、CHAR、VARCHAR、DATE 以及 TEXT,其他类型可能因 DBMS 差异而不同[^1]

    • DROP : 删除数据库和表等对象,使用 DROP TABLE <表名>; 删除表,使用 DROP DATABASE <数据库名> 删除数据库

    • ALTER : 修改数据库和表等对象的结构 使用 ALTER TABLE <表名> [ADD|DROP] COLUMN <列名 >;

  • DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。DML 包含以下几种指令:

    • SELECT :查询表中的数据
    • INSERT :向表中插入新数据
    • UPDATE :更新表中的数据
    • DELETE :删除表中的数据
  • DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令:

    • COMMIT : 确认对数据库中的数据进行的变更
    • ROLLBACK : 取消对数据库中的数据进行的变更
    • GRANT : 赋予用户操作权限
    • REVOKE : 取消用户的操作权限

备注

[^1]: MySQL 的数据类型

MySQL 的数据类型有大概可以分为 5 种,分别是整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型:

  1. 数值类型 包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型包括 FLOAT 和 DOUBLE,定点数类型为 DECIMAL。

  2. 日期/时间类型 包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP

  3. 字符串类型 包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET

  4. 二进制类型 包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB

参考

作者

ZenRay

发布于

2021-04-20

更新于

2021-04-20

许可协议

CC BY-NC-SA 4.0